// 给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素
// 数组元素在内存中的地址是连续的，所以不能单独删除某个元素，只能覆盖

// 思路，双指针，slow和fast， slow指向删除val后的数组的下一个位置，fast指向当前元素
// 时间复杂度：O(n)
// 空间复杂度：O(1)

function removeElement(arr, val) {
    let slow = 0
    let fast = 0
    while (fast < arr.length) {
        if (arr[fast] !== val) {
            arr[slow] = arr[fast]
            slow++
        }
        fast++
    }
    return slow
}

let arr = [1,2,1,4,5]
console.log(removeElement(arr, 1))
console.log(arr)